#include <stdio.h>
#include "nuclei_sdk_hal.h"
#include "anl_printf.h"

#define LEDn  3
static uint32_t LED_CLORK[] = {SOC_LED_RED_GPIO_MASK, SOC_LED_GREEN_GPIO_MASK, SOC_LED_BLUE_GPIO_MASK};

__attribute__ ((interrupt)) void gpio3_handler()
{
    gpio_clear_interrupt(GPIO,( 0x1 << 3 ), GPIO_INT_RISE); 
    anl_printf("gpio3_handler\r\n");    
}

void all_io_config(void)
{
    //for output 
    for(int i=0; i<LEDn; i++)
    {
        gpio_enable_output(GPIO,LED_CLORK[i]);
        gpio_write(GPIO,LED_CLORK[i],1);
    }

    //for input 
	gpio_enable_input(GPIO,( 0x1 << 3 ));
	gpio_enable_interrupt(GPIO,( 0x1 << 3 ),GPIO_INT_RISE);
}

int main(void)
{

	__enable_irq();
	ECLIC_Register_IRQ(GPIO3_IRQn, ECLIC_VECTOR_INTERRUPT, ECLIC_POSTIVE_EDGE_TRIGGER, 1, 1, gpio3_handler);
	all_io_config();

    while(1)
    {
        for(int i=0; i<LEDn; i++)
        {
            gpio_toggle(GPIO,LED_CLORK[i]);
            delay_1ms(1000);
            anl_printf("gpio_toggle\r\n");
        }
    }

    return 0;
}


